home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / earcd / devel / libx11 / include / x11 / xp / tablep.h < prev    next >
C/C++ Source or Header  |  1999-01-01  |  7KB  |  192 lines

  1. #ifndef _XpTableP_h
  2. #define _XpTableP_h
  3. #include <X11/Xp/COPY>
  4.  
  5. /*
  6.  * SCCS_data:    @(#) TableP.h    1.5 92/06/10 06:14:44
  7.  *
  8.  * XpTable -    Forms-based composite widget/geometry manager.
  9.  *        Class heirarchy:
  10.  *            Core
  11.  *            Composite
  12.  *            XpTable
  13.  *
  14.  * Originally implemented by:
  15.  *    David Harrison
  16.  *    University of California, Berkeley
  17.  *    1989
  18.  *
  19.  * Many bug fixes and enhancements provided by
  20.  *    marbru@auto-trol.com    Martin Brunecky
  21.  *    nazgul@alphalpha.com    Kee Hinckley
  22.  *    pastor@PRC.Unisys.COM    Jon A. Pastor
  23.  *
  24.  * Completely re-implemented by:
  25.  *    David.Smyth@SniAP.MchP.SNI.De
  26.  */
  27.  
  28. #include <X11/Xp/Table.h>
  29. #include <X11/Shell.h>
  30.  
  31. /* Method definitions
  32. **====================**
  33.    No new methods.  I can't imagine how anyone is going to sub-class
  34.    THIS Widget, as the coupling between the behavior and the instance
  35.    members is rather intense!
  36. */
  37.  
  38. /* XpTable Class Part: Information kept in class record
  39. **=======================================================**
  40. */
  41.  
  42. typedef struct _XpTableClassPart {
  43.     caddr_t            extension;
  44. } XpTableClassPart;
  45.  
  46. /* Class hierarchy
  47. **=================**
  48. */
  49.  
  50. typedef struct _XpTableClassRec {
  51.     CoreClassPart        core_class;
  52.     CompositeClassPart        composite_class;
  53.     XpTableClassPart        table_class;
  54. } XpTableClassRec;
  55.  
  56. extern XpTableClassRec xpTableClassRec;
  57.  
  58.  
  59. /* Private data types
  60. **====================**
  61.    All of these structures are often used as elements of null terminated arrays.
  62. */
  63.  
  64. /* Table Location structs.
  65. **========================**
  66.    These are used to describe each widget location, in both the
  67.    default_layout and the real_layout.  In the default_layout, the
  68.    location structs contain a quark, in the real_layout they contain the
  69.    actual widget and the orig* fields are set.
  70. */
  71. typedef struct _XpTableLoc {
  72.     XrmQuark        w_quark;        /* Widget name quark    */
  73.     Widget        w;            /* actual widget    */
  74.     int            col, row;        /* Position in table    */
  75.     int            col_span, row_span;    /* Positions spanned    */
  76.     int            orig_width, orig_height;/* Childs orig size    */
  77.     XpTableOpts        options;        /* Child layout options    */
  78. } XpTableLocRec;                /*     *XpTableLoc    */
  79.  
  80. /* XpTableLoc Methods
  81. **=====================**
  82. */
  83. extern XpTableLoc XpTableLocNew         _(( int /*num*/ ));
  84. extern XpTableLoc XpTableLocGrow        _(( XpTableLoc ));
  85. extern XpTableLoc XpTableLocCopy        _(( XpTableLoc ));
  86. extern XpTableLoc XpTableLocParse       _(( String /*layout*/ ));
  87. extern XpTableLoc XpTableLocFind        _(( XpTableLoc, Widget /*toFind*/ ));
  88. extern XpTableLoc XpTableLocFindDefault _(( XpTableLoc, Widget /*toFind*/ ));
  89. extern XpTableLoc XpTableLocFindAtPosition _((XpTableLoc,int/*col*/,int/*ro*/));
  90. extern int  XpTableLocLen             _(( XpTableLoc ));
  91. extern int  XpTableLocPreferredWidth  _(( XpTableLoc, int /*shrink*/ ));
  92. extern int  XpTableLocPreferredHeight _(( XpTableLoc, int /*shrink*/ ));
  93. extern int  XpTableLocNumCols         _(( XpTableLoc ));
  94. extern int  XpTableLocNumRows         _(( XpTableLoc ));
  95. extern int  XpTableLocCompareColSpan  _(( XpTableLoc, XpTableLoc ));
  96. extern int  XpTableLocCompareRowSpan  _(( XpTableLoc, XpTableLoc ));
  97. extern void XpTableLocFree _(( XpTableLoc ));
  98.  
  99. /* Table Vector Structs
  100. **======================**
  101.    A table has two of these vectors: one for columns, and one for rows.
  102. */
  103. typedef int XpTableVectorOpts;
  104. #define    TBL_VEC_MINIMIZE    0x01
  105. #define    TBL_VEC_LOCK        0x02
  106. #define    TBL_VEC_NOGROW        (TBL_VEC_MINIMIZE | TBL_VEC_LOCK)
  107.  
  108. typedef struct _XpTableVector {
  109.     XpTableVectorOpts    options;    /* Apply to entire col or row    */
  110.     int            value;        /* width of col, hieght of row    */
  111.     int            pref_value;    /* minimum or preferred value    */
  112.     int            offset;        /* of upper left corner of cell    */
  113. } XpTableVectorRec, *XpTableVector;
  114.  
  115. /* XpTableVector Methods
  116. **========================**
  117. */
  118. #define TABLE XpTableWidget
  119. #define DO_COL (int)1
  120. #define DO_ROW (int)0
  121.  
  122. extern XpTableVector XpTableVectorNew _(( int, TABLE, int ));
  123. extern void XpTableVectorFree _(( XpTableVector ));
  124. extern void XpTableVectorMinimize _(( XpTableVector, int, TABLE, int));
  125. extern int  XpTableVectorTotalSize _(( XpTableVector, int, TABLE, int));
  126. extern int  XpTableVectorPreferredSize _(( XpTableVector, int, TABLE, int));
  127. extern void XpTableVectorAdjust _(( XpTableVector, int /*len*/, int /*amt*/));
  128. extern void XpTableVectorComputeOffsets _(( XpTableVector, int, int, int ));
  129.  
  130. #undef TABLE
  131.  
  132. typedef enum _ResizeStatus { RSinit, RSdone, RSdueToRequest } ResizeStatus;
  133.  
  134. /* XpTable Part: Information kept in instance record
  135. **====================================================**
  136. */
  137.  
  138. typedef struct _XpTablePart {
  139.     /* controlling members, set by SetValues or from resource database
  140.     */
  141.     Boolean        force_shrink;    /* Shrink smaller than pref'd    */
  142.     Boolean        shrink_simple;    /* Shrink simple widgets    */
  143.     int            margin_width;    /* to left and right of kids    */
  144.     int            margin_height;    /* above and below table kids    */
  145.     int            col_spacing;    /* Space between columns    */
  146.     int            row_spacing;    /* Space between rows        */
  147.     XpTableOpts        default_options;/* Default child layout options    */
  148.     XpTableLoc        default_layout;    /* Layout spec (orig from xrdb)    */
  149.  
  150.     /* internally computed members
  151.     */
  152.     XpTableLoc        real_layout;    /* Computed current layout    */
  153.     int            num_cols;    /* Number of columns        */
  154.     XpTableVector    cols;        /* Widths and opts of each col    */
  155.     int            num_rows;    /* Number of rows        */
  156.     XpTableVector    rows;        /* Heights and opts of each row    */
  157.  
  158.     /* State indications
  159.     */
  160.     ResizeStatus    resizeStatus;    /* if Resize method invoked    */
  161.  
  162. } XpTablePart;
  163.  
  164. /* Instance hierarchy
  165. **====================**
  166. */
  167.  
  168. typedef struct _XpTableRec {
  169.     CorePart        core;
  170.     CompositePart    composite;
  171.     XpTablePart        table;
  172. } XpTableRec;
  173.  
  174. /* Geometry Management Support Methods
  175. **=====================================**
  176. */
  177. extern void XpTableNewLayout _(( XpTableWidget ));
  178. extern void XpTableRecomputeLayout _(( XpTableWidget ));
  179. extern void XpTableResizeLayout _(( XpTableWidget ));
  180.  
  181. extern void XpTableNewRealLayout _(( XpTableWidget ));
  182. extern void XpTableAppendToDefaultLayout _(( XpTableWidget, XpTableLoc ));
  183. extern void XpTableNewColsAndRows _(( XpTableWidget ));
  184. extern void XpTableMakeColsFitWidth _(( XpTableWidget ));
  185. extern void XpTableMakeRowsFitHeight _(( XpTableWidget ));
  186. extern int  XpTablePreferredWidth _(( XpTableWidget ));
  187. extern int  XpTablePreferredHeight _(( XpTableWidget ));
  188. extern void XpTableRequestResize _(( XpTableWidget ));
  189. extern void XpTableSetGeometryOfChildren _(( XpTableWidget ));
  190.  
  191. #endif /* _XpTableP_h */
  192.